package com.mswyt.utils.msHandlebean.annotation;

import org.springframework.stereotype.Component;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 删除的时候，会对待删除的数据，进行是否被其他表引用的校验
 * 比如：前台传入A表五个id集合，准备根据A表id进行删除。在删除前我要、判断B表的a_id字段是否存在我需要删除的A表的id，如果存在就不允许删除。
 *
 * @author: mashuai
 * @ClassName: MsDelCheck
 */
@Component
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MsDelCheck {
    //示例：table_user@role_id@tip_name 解释：检查字段值是否被table_user表的role_id字段引用，如果引用，提示tip_name字段值，其中tip_name非必填
    String[] checkTable();

    //删除标识：默认表未删除标识字段为  deflag=0，不同项目的删除字段可能不一致，需要自己定义即可
    //可在yml文件配置：ms.hb.del-sing:deflag=0
    String delFlag() default "deflag=0";

    //如果数据被引用了，提示信息，该优先级高于checkTable中的tip_name
    String errorMsg() default "";
    //自定义异常信息
    String condition() default "";
}
